package main

import (
	"flag"
	"fmt"

	"t-go-zero/service/user/api/internal/config"
	"t-go-zero/service/user/api/internal/handler"
	"t-go-zero/service/user/api/internal/svc"

	"github.com/zeromicro/go-zero/core/conf"
	"github.com/zeromicro/go-zero/rest"
)

var configFile = flag.String("f", "etc/user-api.yaml", "the config file")

func main() {

	// 获取命令行参数
	flag.Parse()

	// 加载配置文件
	var c config.Config
	conf.MustLoad(*configFile, &c)

	//  创建http服务
	server := rest.MustNewServer(c.RestConf)

	// 关闭http服务
	defer server.Stop()
	//
	//// 自定义错误
	//httpx.SetErrorHandler(func(err error) (int, interface{}) {
	//	switch e := err.(type) {
	//	case *common.CodeError:
	//		return http.StatusOK, e.Result()
	//	default:
	//		return http.StatusInternalServerError, nil
	//	}
	//})

	// 启动前去加载 我们需要的中间件 和数据库或者是RPC服务
	ctx := svc.NewServiceContext(c)

	// 注册我们的http的路由
	handler.RegisterHandlers(server, ctx)

	fmt.Println(fmt.Sprintf("%s %s:%v", c.Name, c.Host, c.Port))

	// 启动http服务
	server.Start()
}
